home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_inspect.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  14KB  |  413 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. source = '# line 1\n\'A module docstring.\'\n\nimport sys, inspect\n# line 5\n\n# line 7\ndef spam(a, b, c, d=3, (e, (f,))=(4, (5,)), *g, **h):\n    eggs(b + d, c + f)\n\n# line 11\ndef eggs(x, y):\n    "A docstring."\n    global fr, st\n    fr = inspect.currentframe()\n    st = inspect.stack()\n    p = x\n    q = y / 0\n\n# line 20\nclass StupidGit:\n    """A longer,\n\n    indented\n\n    docstring."""\n# line 27\n\n    def abuse(self, a, b, c):    # a comment\n        """Another\n\n\tdocstring\n\n        containing\n\n\ttabs\n\t\n        """\n        self.argue(a, b, c)\n# line 40\n    def argue(self, a, b, c):\n        try:\n            spam(a, b, c)\n        except:\n            self.ex = sys.exc_info()\n            self.tr = inspect.trace()\n\n# line 48\nclass MalodorousPervert(StupidGit):\n    pass\n\nclass ParrotDroppings:\n    pass\n\nclass FesteringGob(MalodorousPervert, ParrotDroppings):\n    pass\n'
  5. from test.test_support import TestFailed, TESTFN
  6. import sys
  7. import imp
  8. import os
  9. import string
  10.  
  11. def test(assertion, message, *args):
  12.     if not assertion:
  13.         raise TestFailed, message % args
  14.     
  15.  
  16. import inspect
  17. file = open(TESTFN, 'w')
  18. file.write(source)
  19. file.close()
  20. mod = imp.load_source('testmod', TESTFN)
  21. files_to_clean_up = [
  22.     TESTFN,
  23.     TESTFN + 'c',
  24.     TESTFN + 'o']
  25.  
  26. def istest(func, exp):
  27.     obj = eval(exp)
  28.     test(func(obj), '%s(%s)' % (func.__name__, exp))
  29.     for other in [
  30.         inspect.isbuiltin,
  31.         inspect.isclass,
  32.         inspect.iscode,
  33.         inspect.isframe,
  34.         inspect.isfunction,
  35.         inspect.ismethod,
  36.         inspect.ismodule,
  37.         inspect.istraceback]:
  38.         if other is not func:
  39.             test(not other(obj), 'not %s(%s)' % (other.__name__, exp))
  40.             continue
  41.     
  42.  
  43. git = mod.StupidGit()
  44.  
  45. try:
  46.     1 / 0
  47. except:
  48.     tb = sys.exc_traceback
  49.  
  50. istest(inspect.isbuiltin, 'sys.exit')
  51. istest(inspect.isbuiltin, '[].append')
  52. istest(inspect.isclass, 'mod.StupidGit')
  53. istest(inspect.iscode, 'mod.spam.func_code')
  54. istest(inspect.isframe, 'tb.tb_frame')
  55. istest(inspect.isfunction, 'mod.spam')
  56. istest(inspect.ismethod, 'mod.StupidGit.abuse')
  57. istest(inspect.ismethod, 'git.argue')
  58. istest(inspect.ismodule, 'mod')
  59. istest(inspect.istraceback, 'tb')
  60. import __builtin__
  61. istest(inspect.isdatadescriptor, '__builtin__.file.closed')
  62. istest(inspect.isdatadescriptor, '__builtin__.file.softspace')
  63. test(inspect.isroutine(mod.spam), 'isroutine(mod.spam)')
  64. test(inspect.isroutine([].count), 'isroutine([].count)')
  65. classes = inspect.getmembers(mod, inspect.isclass)
  66. test(classes == [
  67.     ('FesteringGob', mod.FesteringGob),
  68.     ('MalodorousPervert', mod.MalodorousPervert),
  69.     ('ParrotDroppings', mod.ParrotDroppings),
  70.     ('StupidGit', mod.StupidGit)], 'class list')
  71. tree = inspect.getclasstree(map((lambda x: x[1]), classes), 1)
  72. test(tree == [
  73.     (mod.ParrotDroppings, ()),
  74.     (mod.StupidGit, ()),
  75.     [
  76.         (mod.MalodorousPervert, (mod.StupidGit,)),
  77.         [
  78.             (mod.FesteringGob, (mod.MalodorousPervert, mod.ParrotDroppings))]]], 'class tree')
  79. functions = inspect.getmembers(mod, inspect.isfunction)
  80. test(functions == [
  81.     ('eggs', mod.eggs),
  82.     ('spam', mod.spam)], 'function list')
  83. test(inspect.getdoc(mod) == 'A module docstring.', 'getdoc(mod)')
  84. test(inspect.getcomments(mod) == '# line 1\n', 'getcomments(mod)')
  85. test(inspect.getmodule(mod.StupidGit) == mod, 'getmodule(mod.StupidGit)')
  86. test(inspect.getfile(mod.StupidGit) == TESTFN, 'getfile(mod.StupidGit)')
  87. test(inspect.getsourcefile(mod.spam) == TESTFN, 'getsourcefile(mod.spam)')
  88. test(inspect.getsourcefile(git.abuse) == TESTFN, 'getsourcefile(git.abuse)')
  89.  
  90. def sourcerange(top, bottom):
  91.     lines = string.split(source, '\n')
  92.     return string.join(lines[top - 1:bottom], '\n') + '\n'
  93.  
  94. test(inspect.getsource(git.abuse) == sourcerange(29, 39), 'getsource(git.abuse)')
  95. test(inspect.getsource(mod.StupidGit) == sourcerange(21, 46), 'getsource(mod.StupidGit)')
  96. test(inspect.getdoc(mod.StupidGit) == 'A longer,\n\nindented\n\ndocstring.', 'getdoc(mod.StupidGit)')
  97. test(inspect.getdoc(git.abuse) == 'Another\n\ndocstring\n\ncontaining\n\ntabs', 'getdoc(git.abuse)')
  98. test(inspect.getcomments(mod.StupidGit) == '# line 20\n', 'getcomments(mod.StupidGit)')
  99. git.abuse(7, 8, 9)
  100. istest(inspect.istraceback, 'git.ex[2]')
  101. istest(inspect.isframe, 'mod.fr')
  102. test(len(git.tr) == 3, 'trace() length')
  103. test(git.tr[0][1:] == (TESTFN, 43, 'argue', [
  104.     '            spam(a, b, c)\n'], 0), 'trace() row 2')
  105. test(git.tr[1][1:] == (TESTFN, 9, 'spam', [
  106.     '    eggs(b + d, c + f)\n'], 0), 'trace() row 2')
  107. test(git.tr[2][1:] == (TESTFN, 18, 'eggs', [
  108.     '    q = y / 0\n'], 0), 'trace() row 3')
  109. test(len(mod.st) >= 5, 'stack() length')
  110. test(mod.st[0][1:] == (TESTFN, 16, 'eggs', [
  111.     '    st = inspect.stack()\n'], 0), 'stack() row 1')
  112. test(mod.st[1][1:] == (TESTFN, 9, 'spam', [
  113.     '    eggs(b + d, c + f)\n'], 0), 'stack() row 2')
  114. test(mod.st[2][1:] == (TESTFN, 43, 'argue', [
  115.     '            spam(a, b, c)\n'], 0), 'stack() row 3')
  116. test(mod.st[3][1:] == (TESTFN, 39, 'abuse', [
  117.     '        self.argue(a, b, c)\n'], 0), 'stack() row 4')
  118. (args, varargs, varkw, locals) = inspect.getargvalues(mod.fr)
  119. test(args == [
  120.     'x',
  121.     'y'], 'mod.fr args')
  122. test(varargs == None, 'mod.fr varargs')
  123. test(varkw == None, 'mod.fr varkw')
  124. test(locals == {
  125.     'x': 11,
  126.     'p': 11,
  127.     'y': 14 }, 'mod.fr locals')
  128. test(inspect.formatargvalues(args, varargs, varkw, locals) == '(x=11, y=14)', 'mod.fr formatted argvalues')
  129. (args, varargs, varkw, locals) = inspect.getargvalues(mod.fr.f_back)
  130. test(args == [
  131.     'a',
  132.     'b',
  133.     'c',
  134.     'd',
  135.     [
  136.         'e',
  137.         [
  138.             'f']]], 'mod.fr.f_back args')
  139. test(varargs == 'g', 'mod.fr.f_back varargs')
  140. test(varkw == 'h', 'mod.fr.f_back varkw')
  141. test(inspect.formatargvalues(args, varargs, varkw, locals) == '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})', 'mod.fr.f_back formatted argvalues')
  142. for fname in files_to_clean_up:
  143.     
  144.     try:
  145.         os.unlink(fname)
  146.     continue
  147.     continue
  148.  
  149.  
  150. source = "\ndef wrap(foo=None):\n  def wrapper(func):\n    return func\n  return wrapper\n\ndef replace(func):\n  def insteadfunc():\n    print 'hello'\n  return insteadfunc\n\n# two decorators, one with argument\n@wrap()\n@wrap(wrap)\ndef wrapped():\n  pass\n\n@replace\ndef gone():\n  pass"
  151. file = open(TESTFN + '2', 'w')
  152. file.write(source)
  153. file.close()
  154. files_to_clean_up = [
  155.     TESTFN + '2',
  156.     TESTFN + '2c',
  157.     TESTFN + '2o']
  158. mod2 = imp.load_source('testmod3', TESTFN + '2')
  159. test(inspect.getsource(mod2.wrapped) == sourcerange(13, 16), 'inspect.getsource(mod.wrapped)')
  160. test(inspect.getsource(mod2.gone) == sourcerange(8, 9), 'inspect.getsource(mod.gone)')
  161. for fname in files_to_clean_up:
  162.     
  163.     try:
  164.         os.unlink(fname)
  165.     continue
  166.     continue
  167.  
  168.  
  169.  
  170. class A:
  171.     pass
  172.  
  173.  
  174. class B(A):
  175.     pass
  176.  
  177.  
  178. class C(A):
  179.     pass
  180.  
  181.  
  182. class D(B, C):
  183.     pass
  184.  
  185. expected = (D, B, A, C)
  186. got = inspect.getmro(D)
  187. test(expected == got, 'expected %r mro, got %r', expected, got)
  188.  
  189. class A(object):
  190.     pass
  191.  
  192.  
  193. class B(A):
  194.     pass
  195.  
  196.  
  197. class C(A):
  198.     pass
  199.  
  200.  
  201. class D(B, C):
  202.     pass
  203.  
  204. expected = (D, B, C, A, object)
  205. got = inspect.getmro(D)
  206. test(expected == got, 'expected %r mro, got %r', expected, got)
  207.  
  208. def attrs_wo_objs(cls):
  209.     return [ t[:3] for t in inspect.classify_class_attrs(cls) ]
  210.  
  211.  
  212. class A:
  213.     
  214.     def s():
  215.         pass
  216.  
  217.     s = staticmethod(s)
  218.     
  219.     def c(cls):
  220.         pass
  221.  
  222.     c = classmethod(c)
  223.     
  224.     def getp(self):
  225.         pass
  226.  
  227.     p = property(getp)
  228.     
  229.     def m(self):
  230.         pass
  231.  
  232.     
  233.     def m1(self):
  234.         pass
  235.  
  236.     datablob = '1'
  237.  
  238. attrs = attrs_wo_objs(A)
  239. test(('s', 'static method', A) in attrs, 'missing static method')
  240. test(('c', 'class method', A) in attrs, 'missing class method')
  241. test(('p', 'property', A) in attrs, 'missing property')
  242. test(('m', 'method', A) in attrs, 'missing plain method')
  243. test(('m1', 'method', A) in attrs, 'missing plain method')
  244. test(('datablob', 'data', A) in attrs, 'missing data')
  245.  
  246. class B(A):
  247.     
  248.     def m(self):
  249.         pass
  250.  
  251.  
  252. attrs = attrs_wo_objs(B)
  253. test(('s', 'static method', A) in attrs, 'missing static method')
  254. test(('c', 'class method', A) in attrs, 'missing class method')
  255. test(('p', 'property', A) in attrs, 'missing property')
  256. test(('m', 'method', B) in attrs, 'missing plain method')
  257. test(('m1', 'method', A) in attrs, 'missing plain method')
  258. test(('datablob', 'data', A) in attrs, 'missing data')
  259.  
  260. class C(A):
  261.     
  262.     def m(self):
  263.         pass
  264.  
  265.     
  266.     def c(self):
  267.         pass
  268.  
  269.  
  270. attrs = attrs_wo_objs(C)
  271. test(('s', 'static method', A) in attrs, 'missing static method')
  272. test(('c', 'method', C) in attrs, 'missing plain method')
  273. test(('p', 'property', A) in attrs, 'missing property')
  274. test(('m', 'method', C) in attrs, 'missing plain method')
  275. test(('m1', 'method', A) in attrs, 'missing plain method')
  276. test(('datablob', 'data', A) in attrs, 'missing data')
  277.  
  278. class D(B, C):
  279.     
  280.     def m1(self):
  281.         pass
  282.  
  283.  
  284. attrs = attrs_wo_objs(D)
  285. test(('s', 'static method', A) in attrs, 'missing static method')
  286. test(('c', 'class method', A) in attrs, 'missing class method')
  287. test(('p', 'property', A) in attrs, 'missing property')
  288. test(('m', 'method', B) in attrs, 'missing plain method')
  289. test(('m1', 'method', D) in attrs, 'missing plain method')
  290. test(('datablob', 'data', A) in attrs, 'missing data')
  291.  
  292. class A(object):
  293.     
  294.     def s():
  295.         pass
  296.  
  297.     s = staticmethod(s)
  298.     
  299.     def c(cls):
  300.         pass
  301.  
  302.     c = classmethod(c)
  303.     
  304.     def getp(self):
  305.         pass
  306.  
  307.     p = property(getp)
  308.     
  309.     def m(self):
  310.         pass
  311.  
  312.     
  313.     def m1(self):
  314.         pass
  315.  
  316.     datablob = '1'
  317.  
  318. attrs = attrs_wo_objs(A)
  319. test(('s', 'static method', A) in attrs, 'missing static method')
  320. test(('c', 'class method', A) in attrs, 'missing class method')
  321. test(('p', 'property', A) in attrs, 'missing property')
  322. test(('m', 'method', A) in attrs, 'missing plain method')
  323. test(('m1', 'method', A) in attrs, 'missing plain method')
  324. test(('datablob', 'data', A) in attrs, 'missing data')
  325.  
  326. class B(A):
  327.     
  328.     def m(self):
  329.         pass
  330.  
  331.  
  332. attrs = attrs_wo_objs(B)
  333. test(('s', 'static method', A) in attrs, 'missing static method')
  334. test(('c', 'class method', A) in attrs, 'missing class method')
  335. test(('p', 'property', A) in attrs, 'missing property')
  336. test(('m', 'method', B) in attrs, 'missing plain method')
  337. test(('m1', 'method', A) in attrs, 'missing plain method')
  338. test(('datablob', 'data', A) in attrs, 'missing data')
  339.  
  340. class C(A):
  341.     
  342.     def m(self):
  343.         pass
  344.  
  345.     
  346.     def c(self):
  347.         pass
  348.  
  349.  
  350. attrs = attrs_wo_objs(C)
  351. test(('s', 'static method', A) in attrs, 'missing static method')
  352. test(('c', 'method', C) in attrs, 'missing plain method')
  353. test(('p', 'property', A) in attrs, 'missing property')
  354. test(('m', 'method', C) in attrs, 'missing plain method')
  355. test(('m1', 'method', A) in attrs, 'missing plain method')
  356. test(('datablob', 'data', A) in attrs, 'missing data')
  357.  
  358. class D(B, C):
  359.     
  360.     def m1(self):
  361.         pass
  362.  
  363.  
  364. attrs = attrs_wo_objs(D)
  365. test(('s', 'static method', A) in attrs, 'missing static method')
  366. test(('c', 'method', C) in attrs, 'missing plain method')
  367. test(('p', 'property', A) in attrs, 'missing property')
  368. test(('m', 'method', B) in attrs, 'missing plain method')
  369. test(('m1', 'method', D) in attrs, 'missing plain method')
  370. test(('datablob', 'data', A) in attrs, 'missing data')
  371. (args, varargs, varkw, defaults) = inspect.getargspec(mod.eggs)
  372. test(args == [
  373.     'x',
  374.     'y'], 'mod.eggs args')
  375. test(varargs == None, 'mod.eggs varargs')
  376. test(varkw == None, 'mod.eggs varkw')
  377. test(defaults == None, 'mod.eggs defaults')
  378. test(inspect.formatargspec(args, varargs, varkw, defaults) == '(x, y)', 'mod.eggs formatted argspec')
  379. (args, varargs, varkw, defaults) = inspect.getargspec(mod.spam)
  380. test(args == [
  381.     'a',
  382.     'b',
  383.     'c',
  384.     'd',
  385.     [
  386.         'e',
  387.         [
  388.             'f']]], 'mod.spam args')
  389. test(varargs == 'g', 'mod.spam varargs')
  390. test(varkw == 'h', 'mod.spam varkw')
  391. test(defaults == (3, (4, (5,))), 'mod.spam defaults')
  392. test(inspect.formatargspec(args, varargs, varkw, defaults) == '(a, b, c, d=3, (e, (f,))=(4, (5,)), *g, **h)', 'mod.spam formatted argspec')
  393. (args, varargs, varkw, defaults) = inspect.getargspec(A.m)
  394. test(args == [
  395.     'self'], 'A.m args')
  396. test(varargs is None, 'A.m varargs')
  397. test(varkw is None, 'A.m varkw')
  398. test(defaults is None, 'A.m defaults')
  399. count = len(filter((lambda x: x.startswith('is')), dir(inspect)))
  400. test(count == 11, 'There are %d (not 11) is* functions', count)
  401.  
  402. def sublistOfOne(.0):
  403.     foo = .0
  404.     return 1
  405.  
  406. (args, varargs, varkw, defaults) = inspect.getargspec(sublistOfOne)
  407. test(args == [
  408.     [
  409.         'foo']], 'sublistOfOne args')
  410. test(varargs is None, 'sublistOfOne varargs')
  411. test(varkw is None, 'sublistOfOne varkw')
  412. test(defaults is None, 'sublistOfOn defaults')
  413.